Memory devices (which are sometimes referred to herein as “memories”) are typically provided as internal, semiconductor, integrated circuits in computers or other electronic systems. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), and flash memory.
Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Changes in threshold voltage of the cells, through programming of a charge storage structure, such as floating gates or trapping layers or other physical phenomena, determine the data state of each cell. Common electronic systems that utilize flash memory devices include, but are not limited to, personal computers, personal digital assistants (PDAs), digital cameras, digital media players, digital recorders, games, appliances, vehicles, wireless devices, cellular telephones, and removable memory modules, and the uses for flash memory continue to expand.
Flash memory typically utilizes one of two basic architectures known as NOR flash and NAND flash. The designation is derived from the logic used to read the devices. In NOR flash architecture, a string of memory cells is coupled in parallel with each memory cell coupled to a data line, such as those typically referred to as digit (e.g., bit) lines. In NAND flash architecture, a string of memory cells is coupled in series with only the first memory cell of the string coupled to a bit line.
As the performance and complexity of electronic systems increase, the requirement for additional memory in a system also increases. However, in order to continue to reduce the costs of the system, the parts count must be kept to a minimum. This can be accomplished by increasing the memory density of an integrated circuit by using such technologies as multilevel cells (MLC). For example, MLC NAND flash memory is a very cost effective non-volatile memory.
Multilevel cells (which are also sometimes referred to herein as multiple level cells) can take advantage of the analog nature of a traditional charge storage cell by assigning a particular bit pattern to a specific threshold voltage (Vt) range stored on the cell. This technology permits the storage of two or more bits per cell, depending on the quantity of voltage ranges assigned to the cell and the stability of the assigned voltage ranges during the lifetime operation of the memory cell.
Content addressable memories (CAM) are memories that implement a search function in a single clock cycle. They use dedicated comparison circuitry to perform the searching. CAM memories are often used in network routers for packet forwarding and the like. Each individual memory cell in a CAM requires its own comparison circuit in order to allow the CAM to detect a match between a bit of an input feature vector and a bit stored in the CAM. Typical CAM cells use approximately nine to ten transistors for a static random access memory (SRAM)-based CAM, or four to five transistors for a dynamic random access memory (DRAM)-based CAM.
CAM devices can be used to store key words, also referred to as feature vectors, for later comparison. A feature vector can comprise a plurality of attributes that define an object. For example, a feature vector for a person might include hair color, height, weight, and other attributes that can be used to uniquely identify a particular person. While exact matching of attributes is useful, there are times when it is desired to match within a range of values for an attribute.
For the reasons stated above and for other reasons that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a more streamlined approach for comparison of input feature vectors to known feature vectors.